@mixin placeholder {
  &::-webkit-input-placeholder,
  &::-moz-placeholder,
  &:-ms-input-placeholder {
    @content;
  }
}

@mixin user-select($spec...) {
  -webkit-touch-callout: $spec;
  @each $prefix in -webkit-, -moz-, -ms-, '' {
    #{$prefix}user-select: $spec;
  }
}

// transition & animation
  $easeInQuad     : cubic-bezier(0.550, 0.085, 0.680, 0.530);
  $easeInCubic    : cubic-bezier(0.550, 0.055, 0.675, 0.190);
  $easeInQuart    : cubic-bezier(0.895, 0.030, 0.685, 0.220);
  $easeInQuint    : cubic-bezier(0.755, 0.050, 0.855, 0.060);
  $easeInSine     : cubic-bezier(0.470, 0.000, 0.745, 0.715);
  $easeInExpo     : cubic-bezier(0.950, 0.050, 0.795, 0.035);
  $easeInCirc     : cubic-bezier(0.600, 0.040, 0.980, 0.335);
  $easeInBack     : cubic-bezier(0.600, -0.280, 0.735, 0.045);

  $easeOutQuad    : cubic-bezier(0.250, 0.460, 0.450, 0.940);
  $easeOutCubic   : cubic-bezier(0.215, 0.610, 0.355, 1.000);
  $easeOutQuart   : cubic-bezier(0.165, 0.840, 0.440, 1.000);
  $easeOutQuint   : cubic-bezier(0.230, 1.000, 0.320, 1.000);
  $easeOutSine    : cubic-bezier(0.390, 0.575, 0.565, 1.000);
  $easeOutExpo    : cubic-bezier(0.190, 1.000, 0.220, 1.000);
  $easeOutCirc    : cubic-bezier(0.075, 0.820, 0.165, 1.000);
  $easeOutBack    : cubic-bezier(0.175, 0.885, 0.320, 1.275);

  $easeInOutQuad  : cubic-bezier(0.455, 0.030, 0.515, 0.955);
  $easeInOutCubic : cubic-bezier(0.645, 0.045, 0.355, 1.000);
  $easeInOutQuart : cubic-bezier(0.770, 0.000, 0.175, 1.000);
  $easeInOutQuint : cubic-bezier(0.860, 0.000, 0.070, 1.000);
  $easeInOutSine  : cubic-bezier(0.445, 0.050, 0.550, 0.950);
  $easeInOutExpo  : cubic-bezier(1.000, 0.000, 0.000, 1.000);
  $easeInOutCirc  : cubic-bezier(0.785, 0.135, 0.150, 0.860);
  $easeInOutBack  : cubic-bezier(0.680, -0.550, 0.265, 1.550);

  @mixin transition($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}transition: $spec;
    }
  }

  @mixin transition-transform($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}transition: #{$prefix}transform $spec;
    }
  }

  @mixin transition-property($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}transition-property: $spec;
    }
  }

  @mixin animation($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}animation: $spec;
    }
  }

  @mixin keyframes($name) {
    @-webkit-keyframes #{$name} { @content; }
    @keyframes         #{$name} { @content; }
  }

  @mixin transform($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}transform: $spec;
    }
  }

  @mixin transform-origin($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}transform-origin: $spec;
    }
  }

  @mixin filter($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}filter: $spec;
    }
  }

// flexbox
  @mixin display-flex {
    @each $prefix in -webkit-, '' {
      display: #{$prefix}flex;
    }
  }
  @mixin flex-direction($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}flex-direction: $spec;
    }
  }
  @mixin justify-content($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}justify-content: $spec;
    }
  }
  @mixin flex($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}flex: $spec;
    }
  }
  @mixin flex-flow($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}flex-flow: $spec;
    }
  }
  @mixin flex-shrink($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}flex-shrink: $spec;
    }
  }
  @mixin align-items($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}align-items: $spec;
    }
  }
  @mixin align-self($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}align-self: $spec;
    }
  }
  @mixin order($spec...) {
    @each $prefix in -webkit-, '' {
      #{$prefix}order: $spec;
    }
  }
  @mixin max-height-max-content {
    @each $prefix in -webkit-, -moz-, '' {
      max-height: #{$prefix}max-content;
    }
  }
  @mixin max-height-min-content {
    @each $prefix in -webkit-, -moz-, '' {
      max-height: #{$prefix}max-content;
    }
  }
  @mixin min-height-min-content {
    @each $prefix in -webkit-, -moz-, '' {
      min-height: #{$prefix}min-content;
    }
  }
  @mixin min-width-min-content {
    @each $prefix in -webkit-, -moz-, '' {
      min-width: #{$prefix}min-content;
    }
  }
